It is increasingly common for households to own more than one computer, and for these machines to be on a home network. Most homes have multiple computers in the form of desktops, laptops, home theater PCs (HTPCs), as well as non-traditional computing devices that contain common computing hardware such as game consoles, mobile phones, and embedded devices (e.g., set top boxes, routers, and other equipment). Home networks may include more than one connection type, such as wired Ethernet connections to some devices and wireless Wi-Fi connections to other devices. Some devices also communicate using other technologies such as a USB connection or Bluetooth. Other environments may include similar characteristics, such as a small office.
Users often work with multiple devices to perform particular tasks. These tasks often involve moving large amounts of data from one device to another. For example, a user may record television programs on a home theater PC, transfer the programs to a home server where they are transcoded to one or more smaller formats, and then copy the transcoded files to a mobile device for viewing the television programs on the go. Users also perform backups that involve copying large amounts of data from one computing device to a backup computing device, such as a home server or network attached storage (NAS) device.
When accessing files and data stored on a server computer, a client machine uses a network file system protocol such as network file system (NFS) or Server Message Block (SMB/CIFS) which provide operations to read, write, and enumerate files. A client computer frequently interacts with more than one file server. If the client wishes to move or copy files from one server to another it is normal for the client to read files from one server into its local memory, and then write the file contents to the second server. Thus, the data traverses the network twice. If the network exhibits low bandwidth (wireless/modem) or high latency (satellite/WAN) then this process is both slow and inefficient. There may frequently exist a more direct fast path between the two servers but current operating systems and file systems provide no way to use it.